package Design;
/**
 * @author Cjj
 * 设计模式
 */
public class design {
    /**
     * 1.创建型模式
     *   这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象
     *    1.1 工厂模式(Factory Pattern)
     *    1.2 抽象工厂模式(Abstract Factory Pattern)
     *    1.3 单例模式(Singleton Pattern)
     *    1.4 建造者模式(Builder Pattern)
     *    1.5 原型模式(Prototype Pattern)
     *
     * 2.结构型模式
     *  这些模式关注对象之间的组合和关系,皆在解决如何构建灵活且可复用的类和对象结构
     *   2.1 适配器模式(Adapter Pattern)
     *   2.2 桥接模式(Bridge Pattern)
     *   2.3 过滤器模式(Filter Pattern)
     *   2.4 组合模式(Composite Pattern)
     *   2.5 装饰器模式(Decorator Pattern)
     *   2.6 外观模式(Facade Pattern)
     *   2.7 享元模式(Flyweight Pattern)
     *   2.8 代理模式(Proxy Pattern)
     *
     * 3.行为型模式
     *   这些模式关注对象之间的通信和交互，皆在解决对象之间的责任分配和算法的封装
     *   3.1责任链模式(Chain of Responsibility Pattern)
     *   3.2 命令模式(Command Pattern)
     *   3.3 解释器模式(Interpreter Pattern)
     *   3.4 迭代器模式(Iterator Pattern)
     *   3.5 中介者模式(Mediator Pattern)
     *   3.6 备忘录模式(Memento Pattern)
     *   3.7 观察者模式(Observer Pattern)
     *   3.8 状态模式(State Pattern)
     *   3.9 空对象模式(Null object Pattern)
     *   3.91 策略模式(Strategy Pattern)
     *   3.92 模板方法模式(Template Method Pattern)
     *   3.93 访问者模式(Visitor Pattern)
     *
     * 4.J2EE模式
     *   这些设计模式特别关注表示层。这些模式是由Sun Java Center鉴定的。
     *   4.1 MVC模式(MVC Pattern)
     *   4.2 业务代表模式(Business Delegate Pattern)
     *   4.3 组合实体模式(Composite Entity Pattern)
     *   4.4 数据访问对象模式 (Data Access Object Pattern)
     *   4.5 前端控制器模式(Front Controller Pattern)
     *   4.6 拦截过滤器模式(Intercepting Filter Pattern)
     *   4.7 服务定位器模式(Service Locator Pattern)
     *   4.8 传输对象模式(Transfer Object Pattern)
     *
     * 5.设计模式的优点
     * 提供了一种共享的设计词汇和概念,使开发人员能够更好地沟通和理解彼此的设计意图
     * 提供了经过验证的解决方案,可以提高软件的可维护性 可复用性和灵活性
     * 促进了代码的重用,避免了重复的设计和实现
     * 通过遵循设计模式,可以减少系统中的错误和问题,提高代码质量
     */


    /**
     * 设计模式的六大原则
     * 1.开闭原则
     *   对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
     *   为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类
     *
     * 2.里氏替换原则(Liskov Substitution Principle)
     *   面向对象设计的基本原则之一。里氏代换原则中说，任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石。
     *   只有当派生类可以替换掉基类。且软件单位的功能不能受到影响时，基类才能真正被复用
     *
     * 3.依赖倒置原则(Dependency Inversion Principle)
     *   这个原则是开闭原则的基础，它要求软件模块不应该依赖于细节，而应该依赖于抽象。
     *
     * 4.接口隔离原则(Interface Segregation Principle)
     *   这个原则的意思是：使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思：降低类之间的耦合度。
     *   设计思想 ：降低依赖,降低耦合。
     *
     * 5.迪米特法则,又称最少知道原则
     *    一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
     *
     * 6.合成复用原则
     *    尽量使用合成/聚合的方式 而不是使用继承
     */
}
